Skip to content

Merge master into v7 (design doc, NetMQ fix) - #111

Merged
christopherread merged 3 commits into
v7from
v7-sync-master
Oct 25, 2026
Merged

christopherread merged 3 commits into
v7from
v7-sync-master

Conversation

@christopherread

Copy link
Copy Markdown
Owner

Brings v7 up to date with master. Three files change:

The merge was clean. On the merged result, the solution builds with 0 warnings, and all 144 unit tests pass.

Please merge with "Create a merge commit", not squash. A merge commit keeps master's history linked, so later syncs from master only bring in new commits.

After this merges, #109 needs v7 merged into its branch (or a CI re-run against the updated base) for its NetMQ tests to pass.

🤖 Generated with Claude Code

christopherread and others added 3 commits October 25, 2026 09:26
* Add v7 'AI native' design doc

Proposes how v7 changes configuration, message registration, handlers,
testing, errors, observability, contracts, packaging and docs so AI
coding agents (and people) can use Obvs correctly first time. Each
change links to its tracking issue in the v7 milestone (#84-#95).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Design doc: frame the async APIs as layers over the observable core

Section 4 now explains why v7 stays observable-first: handlers, RequestAsync
and IAsyncEnumerable are thin adapters over IObservable, Rx stays first
class for stream composition, and analyzer OBVS006 catches Subscribe(async).
Resolves the open question on Rx: it stays in the core package.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Design doc: describe the bus lifetime under dependency injection

Section 1 now covers how the singleton bus is registered and owned, scoped
handlers, repeated AddObvs calls, keyed buses, and why one bus per
container needs a per-bus instance ID in broker-side names instead of the
process ID used by v6.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
MessageSource started its receive loop with Task.Run. The loop blocks for
as long as the subscription lasts, so each subscription held a thread-pool
thread, and Subscribe waited until the loop got one. On CI's small runners,
the NetMQ tests start a dozen subscriptions at once; the pool added threads
slowly, subscribers took over 5 seconds to connect, publishers stopped
waiting for them, and the first messages were dropped. The loop now runs as
a LongRunning task on a dedicated thread.

TestMessageSourceThreading saturates the thread pool and checks that
subscribing doesn't wait for it. It failed before this change.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Brings in the v7 design doc (#97) and the NetMQ receive-loop fix (#110),
which PR #109 needs for its NetMQ broker tests to pass on CI.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@christopherread christopherread added this to the v7 milestone Oct 25, 2026
@christopherread christopherread self-assigned this Oct 25, 2026
@christopherread
christopherread merged commit 410bdf6 into v7 Oct 25, 2026
1 check passed
christopherread added a commit that referenced this pull request Oct 25, 2026
Brings in the NetMQ receive-loop fix (#110, via #111) so the NetMQ broker
tests pass on CI.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@christopherread
christopherread deleted the v7-sync-master branch October 25, 2026 23:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant